{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import requests\n",
    "import json"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 地理编码"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 126,
   "metadata": {},
   "outputs": [],
   "source": [
    "def geocodes_find(address=str,city=str):\n",
    "    Api_key = '5d9ecde3c906860e39493987d1053573'\n",
    "    url = 'https://restapi.amap.com/v3/geocode/geo?parameters'\n",
    "    params = {\n",
    "    'key':Api_key,\n",
    "    'address':address,\n",
    "    'city':city,\n",
    "    'output':'json'\n",
    "    }\n",
    "    response = requests.get(url,params=params)\n",
    "    data = response.json()\n",
    "    result = data[\"geocodes\"][0][\"location\"]\n",
    "    return(result)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'113.679287,23.632575'"
      ]
     },
     "execution_count": 128,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "geocodes_find('广东省广州市从化区中山大学南方学院','guangdon')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 逆地理编码"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 129,
   "metadata": {},
   "outputs": [],
   "source": [
    "def place_find(location=float):\n",
    "    Api_key = '5d9ecde3c906860e39493987d1053573'\n",
    "    url = 'https://restapi.amap.com/v3/geocode/regeo?parameters'\n",
    "\n",
    "    params = {\n",
    "        'key':Api_key,\n",
    "        'location':location,\n",
    "        'output':'json'\n",
    "    }\n",
    "    response = requests.get(url,params=params)\n",
    "    place = response.json()\n",
    "    place_find_result = place[\"regeocode\"][\"formatted_address\"]\n",
    "    return place_find_result"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 130,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'广东省广州市从化区温泉镇中山大学南方学院'"
      ]
     },
     "execution_count": 130,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "area = place_find('113.679287,23.632575')\n",
    "area"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 行政区域查询"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {},
   "outputs": [],
   "source": [
    "def district(keywords,subdistrict):\n",
    "    url = 'https://restapi.amap.com/v3/config/district?parameters'\n",
    "    Api_key = '5d9ecde3c906860e39493987d1053573'\n",
    "\n",
    "    params={\n",
    "        'key':Api_key,\n",
    "        'keywords':keywords,\n",
    "        'subdistrict':subdistrict,\n",
    "        'page':'1',\n",
    "        'offset':'20',\n",
    "        'extensions':'base',\n",
    "        'filter':'filter',\n",
    "        'output':'json'\n",
    "    }\n",
    "    response = requests.get(url,params=params)\n",
    "    data = response.json()\n",
    "    return data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>citycode</th>\n",
       "      <th>adcode</th>\n",
       "      <th>name</th>\n",
       "      <th>center</th>\n",
       "      <th>level</th>\n",
       "      <th>districts</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0758</td>\n",
       "      <td>441200</td>\n",
       "      <td>肇庆市</td>\n",
       "      <td>112.472529,23.051546</td>\n",
       "      <td>city</td>\n",
       "      <td>[{'citycode': '0758', 'adcode': '441224', 'nam...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0757</td>\n",
       "      <td>440600</td>\n",
       "      <td>佛山市</td>\n",
       "      <td>113.122717,23.028762</td>\n",
       "      <td>city</td>\n",
       "      <td>[{'citycode': '0757', 'adcode': '440607', 'nam...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0754</td>\n",
       "      <td>440500</td>\n",
       "      <td>汕头市</td>\n",
       "      <td>116.708463,23.37102</td>\n",
       "      <td>city</td>\n",
       "      <td>[{'citycode': '0754', 'adcode': '440513', 'nam...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0752</td>\n",
       "      <td>441300</td>\n",
       "      <td>惠州市</td>\n",
       "      <td>114.412599,23.079404</td>\n",
       "      <td>city</td>\n",
       "      <td>[{'citycode': '0752', 'adcode': '441324', 'nam...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0755</td>\n",
       "      <td>440300</td>\n",
       "      <td>深圳市</td>\n",
       "      <td>114.085947,22.547</td>\n",
       "      <td>city</td>\n",
       "      <td>[{'citycode': '0755', 'adcode': '440306', 'nam...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0756</td>\n",
       "      <td>440400</td>\n",
       "      <td>珠海市</td>\n",
       "      <td>113.553986,22.224979</td>\n",
       "      <td>city</td>\n",
       "      <td>[{'citycode': '0756', 'adcode': '440402', 'nam...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>0759</td>\n",
       "      <td>440800</td>\n",
       "      <td>湛江市</td>\n",
       "      <td>110.364977,21.274898</td>\n",
       "      <td>city</td>\n",
       "      <td>[{'citycode': '0759', 'adcode': '440883', 'nam...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>0662</td>\n",
       "      <td>441700</td>\n",
       "      <td>阳江市</td>\n",
       "      <td>111.975107,21.859222</td>\n",
       "      <td>city</td>\n",
       "      <td>[{'citycode': '0662', 'adcode': '441781', 'nam...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>0660</td>\n",
       "      <td>441500</td>\n",
       "      <td>汕尾市</td>\n",
       "      <td>115.364238,22.774485</td>\n",
       "      <td>city</td>\n",
       "      <td>[{'citycode': '0660', 'adcode': '441523', 'nam...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>0768</td>\n",
       "      <td>445100</td>\n",
       "      <td>潮州市</td>\n",
       "      <td>116.632301,23.661701</td>\n",
       "      <td>city</td>\n",
       "      <td>[{'citycode': '0768', 'adcode': '445122', 'nam...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>0750</td>\n",
       "      <td>440700</td>\n",
       "      <td>江门市</td>\n",
       "      <td>113.094942,22.590431</td>\n",
       "      <td>city</td>\n",
       "      <td>[{'citycode': '0750', 'adcode': '440784', 'nam...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>0766</td>\n",
       "      <td>445300</td>\n",
       "      <td>云浮市</td>\n",
       "      <td>112.044439,22.929801</td>\n",
       "      <td>city</td>\n",
       "      <td>[{'citycode': '0766', 'adcode': '445322', 'nam...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>0767</td>\n",
       "      <td>442100</td>\n",
       "      <td>东沙群岛</td>\n",
       "      <td>116.887312,20.617512</td>\n",
       "      <td>city</td>\n",
       "      <td>[]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>0668</td>\n",
       "      <td>440900</td>\n",
       "      <td>茂名市</td>\n",
       "      <td>110.919229,21.659751</td>\n",
       "      <td>city</td>\n",
       "      <td>[{'citycode': '0668', 'adcode': '440983', 'nam...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>0762</td>\n",
       "      <td>441600</td>\n",
       "      <td>河源市</td>\n",
       "      <td>114.697802,23.746266</td>\n",
       "      <td>city</td>\n",
       "      <td>[{'citycode': '0762', 'adcode': '441622', 'nam...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>0753</td>\n",
       "      <td>441400</td>\n",
       "      <td>梅州市</td>\n",
       "      <td>116.117582,24.299112</td>\n",
       "      <td>city</td>\n",
       "      <td>[{'citycode': '0753', 'adcode': '441427', 'nam...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>0769</td>\n",
       "      <td>441900</td>\n",
       "      <td>东莞市</td>\n",
       "      <td>113.746262,23.046237</td>\n",
       "      <td>city</td>\n",
       "      <td>[{'citycode': '0769', 'adcode': '441900', 'nam...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>0663</td>\n",
       "      <td>445200</td>\n",
       "      <td>揭阳市</td>\n",
       "      <td>116.355733,23.543778</td>\n",
       "      <td>city</td>\n",
       "      <td>[{'citycode': '0663', 'adcode': '445222', 'nam...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>0763</td>\n",
       "      <td>441800</td>\n",
       "      <td>清远市</td>\n",
       "      <td>113.051227,23.685022</td>\n",
       "      <td>city</td>\n",
       "      <td>[{'citycode': '0763', 'adcode': '441882', 'nam...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>0751</td>\n",
       "      <td>440200</td>\n",
       "      <td>韶关市</td>\n",
       "      <td>113.591544,24.801322</td>\n",
       "      <td>city</td>\n",
       "      <td>[{'citycode': '0751', 'adcode': '440282', 'nam...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>020</td>\n",
       "      <td>440100</td>\n",
       "      <td>广州市</td>\n",
       "      <td>113.280637,23.125178</td>\n",
       "      <td>city</td>\n",
       "      <td>[{'citycode': '020', 'adcode': '440117', 'name...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>0760</td>\n",
       "      <td>442000</td>\n",
       "      <td>中山市</td>\n",
       "      <td>113.382391,22.521113</td>\n",
       "      <td>city</td>\n",
       "      <td>[{'citycode': '0760', 'adcode': '442000', 'nam...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   citycode  adcode  name                center level  \\\n",
       "0      0758  441200   肇庆市  112.472529,23.051546  city   \n",
       "1      0757  440600   佛山市  113.122717,23.028762  city   \n",
       "2      0754  440500   汕头市   116.708463,23.37102  city   \n",
       "3      0752  441300   惠州市  114.412599,23.079404  city   \n",
       "4      0755  440300   深圳市     114.085947,22.547  city   \n",
       "5      0756  440400   珠海市  113.553986,22.224979  city   \n",
       "6      0759  440800   湛江市  110.364977,21.274898  city   \n",
       "7      0662  441700   阳江市  111.975107,21.859222  city   \n",
       "8      0660  441500   汕尾市  115.364238,22.774485  city   \n",
       "9      0768  445100   潮州市  116.632301,23.661701  city   \n",
       "10     0750  440700   江门市  113.094942,22.590431  city   \n",
       "11     0766  445300   云浮市  112.044439,22.929801  city   \n",
       "12     0767  442100  东沙群岛  116.887312,20.617512  city   \n",
       "13     0668  440900   茂名市  110.919229,21.659751  city   \n",
       "14     0762  441600   河源市  114.697802,23.746266  city   \n",
       "15     0753  441400   梅州市  116.117582,24.299112  city   \n",
       "16     0769  441900   东莞市  113.746262,23.046237  city   \n",
       "17     0663  445200   揭阳市  116.355733,23.543778  city   \n",
       "18     0763  441800   清远市  113.051227,23.685022  city   \n",
       "19     0751  440200   韶关市  113.591544,24.801322  city   \n",
       "20      020  440100   广州市  113.280637,23.125178  city   \n",
       "21     0760  442000   中山市  113.382391,22.521113  city   \n",
       "\n",
       "                                            districts  \n",
       "0   [{'citycode': '0758', 'adcode': '441224', 'nam...  \n",
       "1   [{'citycode': '0757', 'adcode': '440607', 'nam...  \n",
       "2   [{'citycode': '0754', 'adcode': '440513', 'nam...  \n",
       "3   [{'citycode': '0752', 'adcode': '441324', 'nam...  \n",
       "4   [{'citycode': '0755', 'adcode': '440306', 'nam...  \n",
       "5   [{'citycode': '0756', 'adcode': '440402', 'nam...  \n",
       "6   [{'citycode': '0759', 'adcode': '440883', 'nam...  \n",
       "7   [{'citycode': '0662', 'adcode': '441781', 'nam...  \n",
       "8   [{'citycode': '0660', 'adcode': '441523', 'nam...  \n",
       "9   [{'citycode': '0768', 'adcode': '445122', 'nam...  \n",
       "10  [{'citycode': '0750', 'adcode': '440784', 'nam...  \n",
       "11  [{'citycode': '0766', 'adcode': '445322', 'nam...  \n",
       "12                                                 []  \n",
       "13  [{'citycode': '0668', 'adcode': '440983', 'nam...  \n",
       "14  [{'citycode': '0762', 'adcode': '441622', 'nam...  \n",
       "15  [{'citycode': '0753', 'adcode': '441427', 'nam...  \n",
       "16  [{'citycode': '0769', 'adcode': '441900', 'nam...  \n",
       "17  [{'citycode': '0663', 'adcode': '445222', 'nam...  \n",
       "18  [{'citycode': '0763', 'adcode': '441882', 'nam...  \n",
       "19  [{'citycode': '0751', 'adcode': '440282', 'nam...  \n",
       "20  [{'citycode': '020', 'adcode': '440117', 'name...  \n",
       "21  [{'citycode': '0760', 'adcode': '442000', 'nam...  "
      ]
     },
     "execution_count": 106,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.DataFrame(district('广东','3')[\"districts\"][0][\"districts\"])\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 步行路径规划"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "origin = '113.679287,23.632575' #出发点：广东省广州市从化区温泉镇政府\n",
    "destination = '113.632401,23.616941' # 终点"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 141,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[{'instruction': '向南步行161米右转',\n",
       "  'orientation': '南',\n",
       "  'road': [],\n",
       "  'distance': '161',\n",
       "  'duration': '129',\n",
       "  'polyline': '113.679592,23.632088;113.679609,23.631003;113.679609,23.631003;113.679609,23.630877;113.67964,23.630638',\n",
       "  'action': '右转',\n",
       "  'assistant_action': [],\n",
       "  'walk_type': '0'},\n",
       " {'instruction': '向西步行99米左转',\n",
       "  'orientation': '西',\n",
       "  'road': [],\n",
       "  'distance': '99',\n",
       "  'duration': '79',\n",
       "  'polyline': '113.67964,23.630634;113.679362,23.630521;113.679201,23.630473;113.679201,23.630473;113.679032,23.63043;113.679032,23.63043;113.67888,23.630404;113.67888,23.630404;113.678711,23.630365',\n",
       "  'action': '左转',\n",
       "  'assistant_action': [],\n",
       "  'walk_type': '0'},\n",
       " {'instruction': '向南步行237米左转',\n",
       "  'orientation': '南',\n",
       "  'road': [],\n",
       "  'distance': '237',\n",
       "  'duration': '190',\n",
       "  'polyline': '113.678711,23.63036;113.678711,23.62934;113.678711,23.62934;113.678711,23.629193;113.678689,23.629084;113.678637,23.629023;113.678424,23.628902;113.678368,23.628841;113.678316,23.628724;113.678294,23.628611;113.678294,23.628611;113.678277,23.628372',\n",
       "  'action': '左转',\n",
       "  'assistant_action': [],\n",
       "  'walk_type': '0'},\n",
       " {'instruction': '向南步行498米向右前方行走',\n",
       "  'orientation': '南',\n",
       "  'road': [],\n",
       "  'distance': '498',\n",
       "  'duration': '398',\n",
       "  'polyline': '113.678273,23.628368;113.678572,23.628338;113.678685,23.628307;113.678685,23.628307;113.678845,23.628234;113.679045,23.628073;113.679158,23.627964;113.679158,23.627964;113.679214,23.627869;113.679236,23.627778;113.67928,23.627526;113.679288,23.627322;113.679288,23.627322;113.679253,23.626853;113.679184,23.626623;113.679141,23.626497;113.679002,23.626259;113.678941,23.626176;113.678711,23.625977;113.67862,23.625864;113.678529,23.62572;113.678438,23.625191;113.678429,23.625056;113.678451,23.624939;113.678572,23.624657',\n",
       "  'action': '向右前方行走',\n",
       "  'assistant_action': [],\n",
       "  'walk_type': '0'},\n",
       " {'instruction': '沿源富街向西南步行1568米直行',\n",
       "  'orientation': '西南',\n",
       "  'road': '源富街',\n",
       "  'distance': '1568',\n",
       "  'duration': '1254',\n",
       "  'polyline': '113.678572,23.624653;113.678559,23.62451;113.678416,23.624323;113.678416,23.624323;113.677582,23.623793;113.676532,23.623346;113.676363,23.623255;113.676272,23.623151;113.676111,23.622834;113.676042,23.622739;113.67579,23.622483;113.675499,23.622279;113.675417,23.622174;113.675386,23.622088;113.675378,23.621836;113.675378,23.621836;113.675391,23.62161;113.675434,23.621476;113.675543,23.621359;113.675764,23.621181;113.675846,23.621089;113.675903,23.620994;113.675907,23.620855;113.675877,23.620725;113.675747,23.620547;113.675304,23.620052;113.675304,23.620052;113.675204,23.619974;113.675204,23.619974;113.674935,23.619718;113.673924,23.618624;113.673694,23.618433;113.673464,23.618338;113.67322,23.618277;113.671085,23.617791;113.671085,23.617791;113.667904,23.617101',\n",
       "  'action': '直行',\n",
       "  'assistant_action': [],\n",
       "  'walk_type': '0'},\n",
       " {'instruction': '沿源湖街向西步行784米右转',\n",
       "  'orientation': '西',\n",
       "  'road': '源湖街',\n",
       "  'distance': '784',\n",
       "  'duration': '627',\n",
       "  'polyline': '113.667899,23.617096;113.666345,23.61674;113.666345,23.61674;113.66592,23.616654;113.66592,23.616654;113.663555,23.616124;113.663555,23.616124;113.663225,23.616046;113.663225,23.616046;113.662578,23.615916;113.662578,23.615916;113.662036,23.615807;113.661693,23.615716;113.661693,23.615716;113.660404,23.615421',\n",
       "  'action': '右转',\n",
       "  'assistant_action': [],\n",
       "  'walk_type': '0'},\n",
       " {'instruction': '沿龙泉路向西北步行1723米向左前方行走',\n",
       "  'orientation': '西北',\n",
       "  'road': '龙泉路',\n",
       "  'distance': '1723',\n",
       "  'duration': '1378',\n",
       "  'polyline': '113.660399,23.615417;113.66,23.615668;113.66,23.615668;113.659089,23.616233;113.657166,23.617487;113.656984,23.617626;113.656819,23.617782;113.655833,23.618845;113.655686,23.618971;113.655543,23.619076;113.655421,23.619141;113.655282,23.619188;113.655087,23.619236;113.654748,23.619297;113.654514,23.619306;113.654514,23.619306;113.654332,23.619306;113.653971,23.619249;113.652895,23.619015;113.652726,23.618989;113.652574,23.618989;113.652431,23.619015;113.651819,23.61924;113.651819,23.61924;113.65082,23.619614;113.649362,23.619948;113.649362,23.619948;113.648819,23.620078;113.648355,23.620221;113.64809,23.620313;113.647869,23.620438;113.647869,23.620438;113.647378,23.620781;113.647188,23.620894;113.646966,23.620994;113.64648,23.621176;113.646328,23.621259;113.645877,23.621567;113.645877,23.621567;113.645725,23.621697',\n",
       "  'action': '向左前方行走',\n",
       "  'assistant_action': [],\n",
       "  'walk_type': '0'},\n",
       " {'instruction': '沿龙泉路向西步行67米向左前方行走',\n",
       "  'orientation': '西',\n",
       "  'road': '龙泉路',\n",
       "  'distance': '67',\n",
       "  'duration': '54',\n",
       "  'polyline': '113.64572,23.621697;113.645412,23.621788;113.645091,23.621858',\n",
       "  'action': '向左前方行走',\n",
       "  'assistant_action': [],\n",
       "  'walk_type': '0'},\n",
       " {'instruction': '沿温泉大道向西步行22米右转',\n",
       "  'orientation': '西',\n",
       "  'road': '温泉大道',\n",
       "  'distance': '22',\n",
       "  'duration': '18',\n",
       "  'polyline': '113.645087,23.621858;113.64487,23.621819',\n",
       "  'action': '右转',\n",
       "  'assistant_action': [],\n",
       "  'walk_type': '0'},\n",
       " {'instruction': '步行13米左转',\n",
       "  'orientation': [],\n",
       "  'road': [],\n",
       "  'distance': '13',\n",
       "  'duration': '10',\n",
       "  'polyline': '113.644865,23.621814;113.644848,23.62194',\n",
       "  'action': '左转',\n",
       "  'assistant_action': [],\n",
       "  'walk_type': '1'},\n",
       " {'instruction': '沿温泉大道向西南步行1425米右转',\n",
       "  'orientation': '西南',\n",
       "  'road': '温泉大道',\n",
       "  'distance': '1425',\n",
       "  'duration': '1140',\n",
       "  'polyline': '113.644844,23.62194;113.644379,23.621866;113.642856,23.62171;113.642253,23.621606;113.64145,23.621359;113.64053,23.621037;113.64053,23.621037;113.639193,23.620547;113.63885,23.620417;113.638477,23.620239;113.638477,23.620239;113.63605,23.61895;113.635547,23.618672;113.635256,23.618481;113.635256,23.618481;113.634753,23.618103;113.634523,23.617895;113.634262,23.617626;113.634262,23.617626;113.633989,23.617274;113.633637,23.616784;113.633637,23.616784;113.63306,23.615916',\n",
       "  'action': '右转',\n",
       "  'assistant_action': [],\n",
       "  'walk_type': '0'},\n",
       " {'instruction': '向西北步行96米右转',\n",
       "  'orientation': '西北',\n",
       "  'road': [],\n",
       "  'distance': '96',\n",
       "  'duration': '77',\n",
       "  'polyline': '113.633056,23.615911;113.632747,23.616102;113.632747,23.616102;113.632274,23.616385',\n",
       "  'action': '右转',\n",
       "  'assistant_action': [],\n",
       "  'walk_type': '0'},\n",
       " {'instruction': '向北步行66米到达目的地',\n",
       "  'orientation': '北',\n",
       "  'road': [],\n",
       "  'distance': '66',\n",
       "  'duration': '53',\n",
       "  'polyline': '113.63227,23.616385;113.632283,23.616541;113.632283,23.616541;113.632313,23.616688;113.632218,23.616897;113.632218,23.616931;113.632222,23.616962',\n",
       "  'action': [],\n",
       "  'assistant_action': '到达目的地',\n",
       "  'walk_type': '0'}]"
      ]
     },
     "execution_count": 141,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "url = 'https://restapi.amap.com/v3/direction/walking?parameters'\n",
    "Api_key = '5d9ecde3c906860e39493987d1053573'\n",
    "\n",
    "params = {\n",
    "    'key':Api_key,\n",
    "    'origin':origin,\n",
    "    'destination':destination,\n",
    "    'output':'json'\n",
    "}\n",
    "\n",
    "response = requests.get(url,params=params)\n",
    "data = response.json()[\"route\"][\"paths\"][0][\"steps\"]\n",
    "data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 142,
   "metadata": {},
   "outputs": [],
   "source": [
    "def walk(origin,destination):\n",
    "    url = 'https://restapi.amap.com/v3/direction/walking?parameters'\n",
    "    Api_key = '5d9ecde3c906860e39493987d1053573'\n",
    "\n",
    "    params = {\n",
    "        'key':Api_key,\n",
    "        'origin':origin,\n",
    "        'destination':destination,\n",
    "        'output':'json'\n",
    "    }\n",
    "\n",
    "    response = requests.get(url,params=params)\n",
    "    data = response.json()[\"route\"][\"paths\"][0][\"steps\"]\n",
    "    for i in range(0,len(data)):\n",
    "        print(data[int(i)][\"instruction\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 143,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "向南步行161米右转\n",
      "向西步行99米左转\n",
      "向南步行237米左转\n",
      "向南步行498米向右前方行走\n",
      "沿源富街向西南步行1568米直行\n",
      "沿源湖街向西步行784米右转\n",
      "沿龙泉路向西北步行1723米向左前方行走\n",
      "沿龙泉路向西步行67米向左前方行走\n",
      "沿温泉大道向西步行22米右转\n",
      "步行13米左转\n",
      "沿温泉大道向西南步行1425米右转\n",
      "向西北步行96米右转\n",
      "向北步行66米到达目的地\n"
     ]
    }
   ],
   "source": [
    "walk('113.679287,23.632575','113.632401,23.616941')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 搜索POI"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 关于POI推荐算法的思考\n",
    "\n",
    "### 推荐算法算法：\n",
    "* 将地点a, 用户，用户和地点关系进行分别的归类\n",
    "* 如果某个用户搜索某个地点的次数超过一个阈值，那么就假定他就对这个地点感兴趣\n",
    "* 找到用户感兴趣的地点，组成地点集合\n",
    "* 进行一定的算法计算\n",
    "* 将用户感兴趣的地点与用户已经输入在里面的地点进行相似的算法运算，如果觉得这个用户感兴趣的地点与已经输入过的地点类似\n",
    "* 那么就输出这个用户感兴趣的地点作为推荐的地点"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 145,
   "metadata": {},
   "outputs": [],
   "source": [
    "def POI_search(keyword):\n",
    "    url = 'https://restapi.amap.com/v3/place/text?parameters'\n",
    "    Api_key = '5d9ecde3c906860e39493987d1053573'\n",
    "    keyword = keyword\n",
    "\n",
    "    params = {\n",
    "        'key':Api_key,\n",
    "        'keywords':'keywords|美食',\n",
    "        'city':'广州',\n",
    "        'output':'json',\n",
    "        'citylimit':'true'\n",
    "    }\n",
    "\n",
    "    response = requests.get(url,params=params)\n",
    "    search_poi = response.json()\n",
    "    search_poi\n",
    "    df = pd.DataFrame(search_poi[\"pois\"])\n",
    "    return df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 146,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>parent</th>\n",
       "      <th>childtype</th>\n",
       "      <th>name</th>\n",
       "      <th>type</th>\n",
       "      <th>typecode</th>\n",
       "      <th>biz_type</th>\n",
       "      <th>address</th>\n",
       "      <th>location</th>\n",
       "      <th>tel</th>\n",
       "      <th>distance</th>\n",
       "      <th>biz_ext</th>\n",
       "      <th>pname</th>\n",
       "      <th>cityname</th>\n",
       "      <th>adname</th>\n",
       "      <th>importance</th>\n",
       "      <th>shopid</th>\n",
       "      <th>shopinfo</th>\n",
       "      <th>poiweight</th>\n",
       "      <th>photos</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>B0FFHPVLUC</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>美食街</td>\n",
       "      <td>购物服务;特色商业街;特色商业街</td>\n",
       "      <td>061000</td>\n",
       "      <td>[]</td>\n",
       "      <td>员村南街32号附近</td>\n",
       "      <td>113.356462,23.115709</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>{'rating': [], 'cost': []}</td>\n",
       "      <td>广东省</td>\n",
       "      <td>广州市</td>\n",
       "      <td>天河区</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>0</td>\n",
       "      <td>[]</td>\n",
       "      <td>[{'url': 'http://store.is.autonavi.com/showpic...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>B0FFM6QZ64</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>美食街</td>\n",
       "      <td>购物服务;特色商业街;特色商业街</td>\n",
       "      <td>061000</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>113.345716,23.015450</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>{'rating': [], 'cost': []}</td>\n",
       "      <td>广东省</td>\n",
       "      <td>广州市</td>\n",
       "      <td>番禺区</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>0</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>B0FFLM32RV</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>美食街</td>\n",
       "      <td>购物服务;特色商业街;特色商业街</td>\n",
       "      <td>061000</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>113.197256,23.403253</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>{'rating': [], 'cost': []}</td>\n",
       "      <td>广东省</td>\n",
       "      <td>广州市</td>\n",
       "      <td>花都区</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>0</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>B0FFF4QBEZ</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>美食街</td>\n",
       "      <td>购物服务;特色商业街;特色商业街</td>\n",
       "      <td>061000</td>\n",
       "      <td>[]</td>\n",
       "      <td>元岗路636号650号附近</td>\n",
       "      <td>113.339757,23.170898</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>{'rating': '2.2', 'cost': []}</td>\n",
       "      <td>广东省</td>\n",
       "      <td>广州市</td>\n",
       "      <td>天河区</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>0</td>\n",
       "      <td>[]</td>\n",
       "      <td>[{'url': 'http://store.is.autonavi.com/showpic...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>B0FFITDMY8</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>美食街</td>\n",
       "      <td>购物服务;特色商业街;特色商业街</td>\n",
       "      <td>061000</td>\n",
       "      <td>[]</td>\n",
       "      <td>向东大街与夏茅大道交叉口西南200米</td>\n",
       "      <td>113.254811,23.221251</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>{'rating': [], 'cost': []}</td>\n",
       "      <td>广东省</td>\n",
       "      <td>广州市</td>\n",
       "      <td>白云区</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>0</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>B0FFIT9R7X</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>美食街</td>\n",
       "      <td>购物服务;特色商业街;特色商业街</td>\n",
       "      <td>061000</td>\n",
       "      <td>[]</td>\n",
       "      <td>长湴地铁站C口东北50米</td>\n",
       "      <td>113.349632,23.179044</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>{'rating': [], 'cost': []}</td>\n",
       "      <td>广东省</td>\n",
       "      <td>广州市</td>\n",
       "      <td>天河区</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>0</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>B0FFHRY3DZ</td>\n",
       "      <td>B00141JPJ0</td>\n",
       "      <td>202</td>\n",
       "      <td>中华美食街</td>\n",
       "      <td>餐饮服务;中餐厅;中餐厅</td>\n",
       "      <td>050100</td>\n",
       "      <td>diner</td>\n",
       "      <td>体育中心时尚天河天河路299号天河体育中心地下负一层</td>\n",
       "      <td>113.325149,23.134073</td>\n",
       "      <td>13422326177</td>\n",
       "      <td>[]</td>\n",
       "      <td>{'rating': '3.5', 'cost': [], 'meal_ordering':...</td>\n",
       "      <td>广东省</td>\n",
       "      <td>广州市</td>\n",
       "      <td>天河区</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>0</td>\n",
       "      <td>[]</td>\n",
       "      <td>[{'url': 'http://store.is.autonavi.com/showpic...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>B00141PHBR</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>荔湾美食</td>\n",
       "      <td>餐饮服务;中餐厅;中餐厅</td>\n",
       "      <td>050100</td>\n",
       "      <td>diner</td>\n",
       "      <td>环市西路145</td>\n",
       "      <td>113.250561,23.145583</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>{'rating': [], 'cost': [], 'meal_ordering': '0'}</td>\n",
       "      <td>广东省</td>\n",
       "      <td>广州市</td>\n",
       "      <td>荔湾区</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>0</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>B0FFGHCHQ3</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>梅州美食</td>\n",
       "      <td>餐饮服务;中餐厅;中餐厅</td>\n",
       "      <td>050100</td>\n",
       "      <td>diner</td>\n",
       "      <td>长湴市场96档</td>\n",
       "      <td>113.349325,23.169959</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>{'rating': '3.5', 'cost': [], 'meal_ordering':...</td>\n",
       "      <td>广东省</td>\n",
       "      <td>广州市</td>\n",
       "      <td>天河区</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>0</td>\n",
       "      <td>[]</td>\n",
       "      <td>[{'url': 'http://store.is.autonavi.com/showpic...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>B0FFINMI2J</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>西方美食</td>\n",
       "      <td>餐饮服务;中餐厅;中餐厅</td>\n",
       "      <td>050100</td>\n",
       "      <td>diner</td>\n",
       "      <td>南岸路71号之二南侧</td>\n",
       "      <td>113.231693,23.135582</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>{'rating': [], 'cost': [], 'meal_ordering': '0'}</td>\n",
       "      <td>广东省</td>\n",
       "      <td>广州市</td>\n",
       "      <td>荔湾区</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>0</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>B0FFGSKCU8</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>亮记特色美食</td>\n",
       "      <td>餐饮服务;快餐厅;快餐厅</td>\n",
       "      <td>050300</td>\n",
       "      <td>diner</td>\n",
       "      <td>芳村大道西芳村农产品批发市场桥11档</td>\n",
       "      <td>113.204543,23.115788</td>\n",
       "      <td>13610366919;13425692901</td>\n",
       "      <td>[]</td>\n",
       "      <td>{'rating': '3.5', 'cost': [], 'meal_ordering':...</td>\n",
       "      <td>广东省</td>\n",
       "      <td>广州市</td>\n",
       "      <td>荔湾区</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>0</td>\n",
       "      <td>[]</td>\n",
       "      <td>[{'url': 'http://store.is.autonavi.com/showpic...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>B00140UBD4</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>美食阁</td>\n",
       "      <td>餐饮服务;中餐厅;中餐厅</td>\n",
       "      <td>050100</td>\n",
       "      <td>diner</td>\n",
       "      <td>流花路120号中国大酒店内(近越秀公园)</td>\n",
       "      <td>113.259845,23.139861</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>{'rating': '3.5', 'cost': '24.00', 'meal_order...</td>\n",
       "      <td>广东省</td>\n",
       "      <td>广州市</td>\n",
       "      <td>越秀区</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>0</td>\n",
       "      <td>[]</td>\n",
       "      <td>[{'url': 'http://store.is.autonavi.com/showpic...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>B0FFGES3BT</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>客家特色美食(石牌店)</td>\n",
       "      <td>餐饮服务;中餐厅;广东菜(粤菜)</td>\n",
       "      <td>050103</td>\n",
       "      <td>diner</td>\n",
       "      <td>石牌西河大街10号102房</td>\n",
       "      <td>113.340429,23.132566</td>\n",
       "      <td>13533130231</td>\n",
       "      <td>[]</td>\n",
       "      <td>{'rating': '5.0', 'cost': '19.00', 'meal_order...</td>\n",
       "      <td>广东省</td>\n",
       "      <td>广州市</td>\n",
       "      <td>天河区</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>0</td>\n",
       "      <td>[]</td>\n",
       "      <td>[{'url': 'http://store.is.autonavi.com/showpic...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>B0FFFAIDBD</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>联丰美食</td>\n",
       "      <td>餐饮服务;中餐厅;中餐厅</td>\n",
       "      <td>050100</td>\n",
       "      <td>diner</td>\n",
       "      <td>[]</td>\n",
       "      <td>113.341734,22.913146</td>\n",
       "      <td>020-31193228;13678945360;13719294623</td>\n",
       "      <td>[]</td>\n",
       "      <td>{'rating': '4.0', 'cost': '59.00', 'meal_order...</td>\n",
       "      <td>广东省</td>\n",
       "      <td>广州市</td>\n",
       "      <td>番禺区</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>0</td>\n",
       "      <td>[]</td>\n",
       "      <td>[{'url': 'http://store.is.autonavi.com/showpic...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>B001407503</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>旧水坑美食广场</td>\n",
       "      <td>购物服务;特色商业街;特色商业街</td>\n",
       "      <td>061000</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>113.397641,22.954490</td>\n",
       "      <td>18102209976</td>\n",
       "      <td>[]</td>\n",
       "      <td>{'rating': [], 'cost': []}</td>\n",
       "      <td>广东省</td>\n",
       "      <td>广州市</td>\n",
       "      <td>番禺区</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>0</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>B0FFHPQOS5</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>潮汕特色美食</td>\n",
       "      <td>餐饮服务;餐饮相关场所;餐饮相关</td>\n",
       "      <td>050000</td>\n",
       "      <td>diner</td>\n",
       "      <td>东圃二横路28号</td>\n",
       "      <td>113.405514,23.118587</td>\n",
       "      <td>15818872093</td>\n",
       "      <td>[]</td>\n",
       "      <td>{'rating': '3.5', 'cost': [], 'meal_ordering':...</td>\n",
       "      <td>广东省</td>\n",
       "      <td>广州市</td>\n",
       "      <td>天河区</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>1</td>\n",
       "      <td>[]</td>\n",
       "      <td>[{'url': 'http://store.is.autonavi.com/showpic...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>B0FFM7XL79</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>美食客栈</td>\n",
       "      <td>住宿服务;旅馆招待所;旅馆招待所</td>\n",
       "      <td>100200</td>\n",
       "      <td>hotel</td>\n",
       "      <td>江夏北一路24号附近</td>\n",
       "      <td>113.281070,23.210981</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>{'rating': [], 'cost': [], 'hotel_ordering': [...</td>\n",
       "      <td>广东省</td>\n",
       "      <td>广州市</td>\n",
       "      <td>白云区</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>0</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>B0FFL2JH9A</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>美食客栈</td>\n",
       "      <td>住宿服务;旅馆招待所;旅馆招待所</td>\n",
       "      <td>100200</td>\n",
       "      <td>hotel</td>\n",
       "      <td>解放路19-118附近</td>\n",
       "      <td>113.411459,22.804247</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>{'rating': [], 'cost': [], 'hotel_ordering': [...</td>\n",
       "      <td>广东省</td>\n",
       "      <td>广州市</td>\n",
       "      <td>南沙区</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>0</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>B0FFFAEDMX</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>广西兴业美食</td>\n",
       "      <td>餐饮服务;中餐厅;中餐厅</td>\n",
       "      <td>050100</td>\n",
       "      <td>diner</td>\n",
       "      <td>大涌路与工业二路交叉口东南50米</td>\n",
       "      <td>113.329807,23.023235</td>\n",
       "      <td>15975531998</td>\n",
       "      <td>[]</td>\n",
       "      <td>{'rating': '3.0', 'cost': [], 'meal_ordering':...</td>\n",
       "      <td>广东省</td>\n",
       "      <td>广州市</td>\n",
       "      <td>番禺区</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>0</td>\n",
       "      <td>[]</td>\n",
       "      <td>[{'url': 'http://store.is.autonavi.com/showpic...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>B0FFFAH74E</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>湖南美食烧烤</td>\n",
       "      <td>餐饮服务;中餐厅;特色/地方风味餐厅|餐饮服务;中餐厅;湖南菜(湘菜)</td>\n",
       "      <td>050118|050108</td>\n",
       "      <td>diner</td>\n",
       "      <td>南街路与炭步繁华路交叉口西南50米</td>\n",
       "      <td>113.107007,23.331525</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>{'rating': [], 'cost': [], 'meal_ordering': '0'}</td>\n",
       "      <td>广东省</td>\n",
       "      <td>广州市</td>\n",
       "      <td>花都区</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>0</td>\n",
       "      <td>[]</td>\n",
       "      <td>[{'url': 'http://store.is.autonavi.com/showpic...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            id      parent childtype         name  \\\n",
       "0   B0FFHPVLUC          []        []          美食街   \n",
       "1   B0FFM6QZ64          []        []          美食街   \n",
       "2   B0FFLM32RV          []        []          美食街   \n",
       "3   B0FFF4QBEZ          []        []          美食街   \n",
       "4   B0FFITDMY8          []        []          美食街   \n",
       "5   B0FFIT9R7X          []        []          美食街   \n",
       "6   B0FFHRY3DZ  B00141JPJ0       202        中华美食街   \n",
       "7   B00141PHBR          []        []         荔湾美食   \n",
       "8   B0FFGHCHQ3          []        []         梅州美食   \n",
       "9   B0FFINMI2J          []        []         西方美食   \n",
       "10  B0FFGSKCU8          []        []       亮记特色美食   \n",
       "11  B00140UBD4          []        []          美食阁   \n",
       "12  B0FFGES3BT          []        []  客家特色美食(石牌店)   \n",
       "13  B0FFFAIDBD          []        []         联丰美食   \n",
       "14  B001407503          []        []      旧水坑美食广场   \n",
       "15  B0FFHPQOS5          []        []       潮汕特色美食   \n",
       "16  B0FFM7XL79          []        []         美食客栈   \n",
       "17  B0FFL2JH9A          []        []         美食客栈   \n",
       "18  B0FFFAEDMX          []        []       广西兴业美食   \n",
       "19  B0FFFAH74E          []        []       湖南美食烧烤   \n",
       "\n",
       "                                   type       typecode biz_type  \\\n",
       "0                      购物服务;特色商业街;特色商业街         061000       []   \n",
       "1                      购物服务;特色商业街;特色商业街         061000       []   \n",
       "2                      购物服务;特色商业街;特色商业街         061000       []   \n",
       "3                      购物服务;特色商业街;特色商业街         061000       []   \n",
       "4                      购物服务;特色商业街;特色商业街         061000       []   \n",
       "5                      购物服务;特色商业街;特色商业街         061000       []   \n",
       "6                          餐饮服务;中餐厅;中餐厅         050100    diner   \n",
       "7                          餐饮服务;中餐厅;中餐厅         050100    diner   \n",
       "8                          餐饮服务;中餐厅;中餐厅         050100    diner   \n",
       "9                          餐饮服务;中餐厅;中餐厅         050100    diner   \n",
       "10                         餐饮服务;快餐厅;快餐厅         050300    diner   \n",
       "11                         餐饮服务;中餐厅;中餐厅         050100    diner   \n",
       "12                     餐饮服务;中餐厅;广东菜(粤菜)         050103    diner   \n",
       "13                         餐饮服务;中餐厅;中餐厅         050100    diner   \n",
       "14                     购物服务;特色商业街;特色商业街         061000       []   \n",
       "15                     餐饮服务;餐饮相关场所;餐饮相关         050000    diner   \n",
       "16                     住宿服务;旅馆招待所;旅馆招待所         100200    hotel   \n",
       "17                     住宿服务;旅馆招待所;旅馆招待所         100200    hotel   \n",
       "18                         餐饮服务;中餐厅;中餐厅         050100    diner   \n",
       "19  餐饮服务;中餐厅;特色/地方风味餐厅|餐饮服务;中餐厅;湖南菜(湘菜)  050118|050108    diner   \n",
       "\n",
       "                       address              location  \\\n",
       "0                    员村南街32号附近  113.356462,23.115709   \n",
       "1                           []  113.345716,23.015450   \n",
       "2                           []  113.197256,23.403253   \n",
       "3                元岗路636号650号附近  113.339757,23.170898   \n",
       "4           向东大街与夏茅大道交叉口西南200米  113.254811,23.221251   \n",
       "5                 长湴地铁站C口东北50米  113.349632,23.179044   \n",
       "6   体育中心时尚天河天河路299号天河体育中心地下负一层  113.325149,23.134073   \n",
       "7                      环市西路145  113.250561,23.145583   \n",
       "8                      长湴市场96档  113.349325,23.169959   \n",
       "9                   南岸路71号之二南侧  113.231693,23.135582   \n",
       "10          芳村大道西芳村农产品批发市场桥11档  113.204543,23.115788   \n",
       "11        流花路120号中国大酒店内(近越秀公园)  113.259845,23.139861   \n",
       "12               石牌西河大街10号102房  113.340429,23.132566   \n",
       "13                          []  113.341734,22.913146   \n",
       "14                          []  113.397641,22.954490   \n",
       "15                    东圃二横路28号  113.405514,23.118587   \n",
       "16                  江夏北一路24号附近  113.281070,23.210981   \n",
       "17                 解放路19-118附近  113.411459,22.804247   \n",
       "18            大涌路与工业二路交叉口东南50米  113.329807,23.023235   \n",
       "19           南街路与炭步繁华路交叉口西南50米  113.107007,23.331525   \n",
       "\n",
       "                                     tel distance  \\\n",
       "0                                     []       []   \n",
       "1                                     []       []   \n",
       "2                                     []       []   \n",
       "3                                     []       []   \n",
       "4                                     []       []   \n",
       "5                                     []       []   \n",
       "6                            13422326177       []   \n",
       "7                                     []       []   \n",
       "8                                     []       []   \n",
       "9                                     []       []   \n",
       "10               13610366919;13425692901       []   \n",
       "11                                    []       []   \n",
       "12                           13533130231       []   \n",
       "13  020-31193228;13678945360;13719294623       []   \n",
       "14                           18102209976       []   \n",
       "15                           15818872093       []   \n",
       "16                                    []       []   \n",
       "17                                    []       []   \n",
       "18                           15975531998       []   \n",
       "19                                    []       []   \n",
       "\n",
       "                                              biz_ext pname cityname adname  \\\n",
       "0                          {'rating': [], 'cost': []}   广东省      广州市    天河区   \n",
       "1                          {'rating': [], 'cost': []}   广东省      广州市    番禺区   \n",
       "2                          {'rating': [], 'cost': []}   广东省      广州市    花都区   \n",
       "3                       {'rating': '2.2', 'cost': []}   广东省      广州市    天河区   \n",
       "4                          {'rating': [], 'cost': []}   广东省      广州市    白云区   \n",
       "5                          {'rating': [], 'cost': []}   广东省      广州市    天河区   \n",
       "6   {'rating': '3.5', 'cost': [], 'meal_ordering':...   广东省      广州市    天河区   \n",
       "7    {'rating': [], 'cost': [], 'meal_ordering': '0'}   广东省      广州市    荔湾区   \n",
       "8   {'rating': '3.5', 'cost': [], 'meal_ordering':...   广东省      广州市    天河区   \n",
       "9    {'rating': [], 'cost': [], 'meal_ordering': '0'}   广东省      广州市    荔湾区   \n",
       "10  {'rating': '3.5', 'cost': [], 'meal_ordering':...   广东省      广州市    荔湾区   \n",
       "11  {'rating': '3.5', 'cost': '24.00', 'meal_order...   广东省      广州市    越秀区   \n",
       "12  {'rating': '5.0', 'cost': '19.00', 'meal_order...   广东省      广州市    天河区   \n",
       "13  {'rating': '4.0', 'cost': '59.00', 'meal_order...   广东省      广州市    番禺区   \n",
       "14                         {'rating': [], 'cost': []}   广东省      广州市    番禺区   \n",
       "15  {'rating': '3.5', 'cost': [], 'meal_ordering':...   广东省      广州市    天河区   \n",
       "16  {'rating': [], 'cost': [], 'hotel_ordering': [...   广东省      广州市    白云区   \n",
       "17  {'rating': [], 'cost': [], 'hotel_ordering': [...   广东省      广州市    南沙区   \n",
       "18  {'rating': '3.0', 'cost': [], 'meal_ordering':...   广东省      广州市    番禺区   \n",
       "19   {'rating': [], 'cost': [], 'meal_ordering': '0'}   广东省      广州市    花都区   \n",
       "\n",
       "   importance shopid shopinfo poiweight  \\\n",
       "0          []     []        0        []   \n",
       "1          []     []        0        []   \n",
       "2          []     []        0        []   \n",
       "3          []     []        0        []   \n",
       "4          []     []        0        []   \n",
       "5          []     []        0        []   \n",
       "6          []     []        0        []   \n",
       "7          []     []        0        []   \n",
       "8          []     []        0        []   \n",
       "9          []     []        0        []   \n",
       "10         []     []        0        []   \n",
       "11         []     []        0        []   \n",
       "12         []     []        0        []   \n",
       "13         []     []        0        []   \n",
       "14         []     []        0        []   \n",
       "15         []     []        1        []   \n",
       "16         []     []        0        []   \n",
       "17         []     []        0        []   \n",
       "18         []     []        0        []   \n",
       "19         []     []        0        []   \n",
       "\n",
       "                                               photos  \n",
       "0   [{'url': 'http://store.is.autonavi.com/showpic...  \n",
       "1                                                  []  \n",
       "2                                                  []  \n",
       "3   [{'url': 'http://store.is.autonavi.com/showpic...  \n",
       "4                                                  []  \n",
       "5                                                  []  \n",
       "6   [{'url': 'http://store.is.autonavi.com/showpic...  \n",
       "7                                                  []  \n",
       "8   [{'url': 'http://store.is.autonavi.com/showpic...  \n",
       "9                                                  []  \n",
       "10  [{'url': 'http://store.is.autonavi.com/showpic...  \n",
       "11  [{'url': 'http://store.is.autonavi.com/showpic...  \n",
       "12  [{'url': 'http://store.is.autonavi.com/showpic...  \n",
       "13  [{'url': 'http://store.is.autonavi.com/showpic...  \n",
       "14                                                 []  \n",
       "15  [{'url': 'http://store.is.autonavi.com/showpic...  \n",
       "16                                                 []  \n",
       "17                                                 []  \n",
       "18  [{'url': 'http://store.is.autonavi.com/showpic...  \n",
       "19  [{'url': 'http://store.is.autonavi.com/showpic...  "
      ]
     },
     "execution_count": 146,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "POI_search(\"广东\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# IP定位"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 151,
   "metadata": {},
   "outputs": [],
   "source": [
    "def IP(IP):\n",
    "    url = 'https://restapi.amap.com/v3/ip?parameters'\n",
    "    Api_key = '5d9ecde3c906860e39493987d1053573'\n",
    "    IP = IP # 百度搜索的IP地址\n",
    "\n",
    "    params = {\n",
    "        'key':Api_key,\n",
    "        'ip':IP,\n",
    "        'output':'json',\n",
    "    }\n",
    "\n",
    "    response = requests.get(url,params=params)\n",
    "    IP_place = response.json()[\"city\"]\n",
    "    return IP_place"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 152,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'北京市'"
      ]
     },
     "execution_count": 152,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 返回IP地址的城市\n",
    "IP('39.156.69.79')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 批量请求接口"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 适用场景：\n",
    "### 希望批量得到接口返回数据的用户。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 批量请求API父请求服务地址\n",
    "# https://restapi.amap.com/v3/batch?key=<用户的key>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 122,
   "metadata": {},
   "outputs": [],
   "source": [
    "def request_port(x,y):\n",
    "    url = 'https://restapi.amap.com/v3/batch?key'\n",
    "\n",
    "    headers = {\n",
    "            'Content-Type':'application/json'\n",
    "    }\n",
    "\n",
    "    body = {\n",
    "        \"ops\": [\n",
    "            {\n",
    "                \"url\": '/v3/place/around?offset=10&page=1&key=5d9ecde3c906860e39493987d1053573&output=json&radius=100000&types=080000&location='+ x\n",
    "            },\n",
    "            {\n",
    "                \"url\": '/v3/place/around?offset=10&page=1&key=5d9ecde3c906860e39493987d1053573&output=json&radius=100000&types=080000&location='+ y\n",
    "            }\n",
    "        ]\n",
    "    }\n",
    "\n",
    "    params = {\n",
    "        'key':'5d9ecde3c906860e39493987d1053573'\n",
    "    }\n",
    "\n",
    "    r = requests.post(url,params=params,headers=headers,json=body)\n",
    "    data = r.json()\n",
    "    return data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 153,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[{'status': 200,\n",
       "  'body': {'suggestion': {'keywords': {}, 'cities': {}},\n",
       "   'info': 'OK',\n",
       "   'status': '1',\n",
       "   'count': '888',\n",
       "   'pois': [{'typecode': '080601',\n",
       "     'adname': '海珠区',\n",
       "     'biz_type': 'cinema',\n",
       "     'id': 'B00141PPCD',\n",
       "     'pname': '广东省',\n",
       "     'importance': {},\n",
       "     'parent': 'B00140WBI1',\n",
       "     'location': '113.324594,23.10648',\n",
       "     'distance': '0',\n",
       "     'tel': '020-89338225;020-89996086',\n",
       "     'biz_ext': {'seat_ordering': '0', 'rating': '4.5', 'cost': '69.00'},\n",
       "     'shopid': {},\n",
       "     'address': '阅江西路222号广州塔18-21层',\n",
       "     'poiweight': {},\n",
       "     'cityname': '广州市',\n",
       "     'photos': [{'url': 'http://store.is.autonavi.com/showpic/ec9885caf97c61a53f9ddf299544ffed',\n",
       "       'title': {},\n",
       "       'provider': {}},\n",
       "      {'url': 'http://store.is.autonavi.com/showpic/e129e468c9641e6c41339659dabe38ce',\n",
       "       'title': {},\n",
       "       'provider': {}},\n",
       "      {'url': 'http://store.is.autonavi.com/showpic/8aaa386d982cb95d499d1561888675e0',\n",
       "       'title': {},\n",
       "       'provider': {}}],\n",
       "     'type': '体育休闲服务;影剧院;电影院',\n",
       "     'shopinfo': '0',\n",
       "     'name': '金逸空中电影城',\n",
       "     'childtype': '302'},\n",
       "    {'typecode': '080501',\n",
       "     'adname': '海珠区',\n",
       "     'biz_type': {},\n",
       "     'id': 'B00141PT94',\n",
       "     'pname': '广东省',\n",
       "     'importance': {},\n",
       "     'parent': 'B00140WBI1',\n",
       "     'location': '113.324588,23.106469',\n",
       "     'distance': '1',\n",
       "     'tel': '020-89338222',\n",
       "     'biz_ext': {'rating': {}, 'cost': {}},\n",
       "     'shopid': {},\n",
       "     'address': '阅江西路222号广州塔塔顶平台',\n",
       "     'poiweight': {},\n",
       "     'cityname': '广州市',\n",
       "     'photos': {},\n",
       "     'type': '体育休闲服务;休闲场所;游乐场',\n",
       "     'shopinfo': '0',\n",
       "     'name': '广州塔-跳楼机',\n",
       "     'childtype': '302'},\n",
       "    {'typecode': '080000',\n",
       "     'adname': '海珠区',\n",
       "     'biz_type': {},\n",
       "     'id': 'B0FFG29H5F',\n",
       "     'pname': '广东省',\n",
       "     'importance': {},\n",
       "     'parent': 'B00140WBI1',\n",
       "     'location': '113.324516,23.106441',\n",
       "     'distance': '8',\n",
       "     'tel': {},\n",
       "     'biz_ext': {'rating': {}, 'cost': {}},\n",
       "     'shopid': {},\n",
       "     'address': '阅江西路222号广州塔塔顶游乐区内',\n",
       "     'poiweight': {},\n",
       "     'cityname': '广州市',\n",
       "     'photos': {},\n",
       "     'type': '体育休闲服务;体育休闲服务场所;体育休闲服务场所',\n",
       "     'shopinfo': '0',\n",
       "     'name': '极速云霄',\n",
       "     'childtype': '302'},\n",
       "    {'typecode': '080000',\n",
       "     'adname': '海珠区',\n",
       "     'biz_type': {},\n",
       "     'id': 'B0FFG2340M',\n",
       "     'pname': '广东省',\n",
       "     'importance': {},\n",
       "     'parent': 'B00140WBI1',\n",
       "     'location': '113.324507,23.106439',\n",
       "     'distance': '9',\n",
       "     'tel': {},\n",
       "     'biz_ext': {'rating': {}, 'cost': {}},\n",
       "     'shopid': {},\n",
       "     'address': '阅江西路222号广州塔内',\n",
       "     'poiweight': {},\n",
       "     'cityname': '广州市',\n",
       "     'photos': {},\n",
       "     'type': '体育休闲服务;体育休闲服务场所;体育休闲服务场所',\n",
       "     'shopinfo': '0',\n",
       "     'name': '广州塔-塔顶游乐区',\n",
       "     'childtype': '302'},\n",
       "    {'typecode': '080000',\n",
       "     'adname': '海珠区',\n",
       "     'biz_type': {},\n",
       "     'id': 'B0FFIY7SIH',\n",
       "     'pname': '广东省',\n",
       "     'importance': {},\n",
       "     'parent': 'B0FFF4RIFF',\n",
       "     'location': '113.324493,23.106531',\n",
       "     'distance': '11',\n",
       "     'tel': {},\n",
       "     'biz_ext': {'rating': '4.3', 'cost': {}},\n",
       "     'shopid': {},\n",
       "     'address': '阅江西路222号',\n",
       "     'poiweight': {},\n",
       "     'cityname': '广州市',\n",
       "     'photos': {},\n",
       "     'type': '体育休闲服务;体育休闲服务场所;体育休闲服务场所',\n",
       "     'shopinfo': '0',\n",
       "     'name': '广州塔E区-观光层',\n",
       "     'childtype': '302'},\n",
       "    {'typecode': '080111',\n",
       "     'adname': '海珠区',\n",
       "     'biz_type': {},\n",
       "     'id': 'B0FFHWOJ1X',\n",
       "     'pname': '广东省',\n",
       "     'importance': {},\n",
       "     'parent': {},\n",
       "     'location': '113.323055,23.104335',\n",
       "     'distance': '285',\n",
       "     'tel': '020-89449620',\n",
       "     'biz_ext': {'rating': '4.0', 'cost': '177.00'},\n",
       "     'shopid': {},\n",
       "     'address': '艺苑路泊雅湾二楼',\n",
       "     'poiweight': {},\n",
       "     'cityname': '广州市',\n",
       "     'photos': [{'url': 'http://store.is.autonavi.com/showpic/c4e28dae3c42fccc75386cca3a20821f',\n",
       "       'title': {},\n",
       "       'provider': {}},\n",
       "      {'url': 'http://store.is.autonavi.com/showpic/4a037b0a9816decc0080db62a3e0c475',\n",
       "       'title': {},\n",
       "       'provider': {}},\n",
       "      {'url': 'http://store.is.autonavi.com/showpic/bf8a616ad953c97401767a6863c9ef0e',\n",
       "       'title': {},\n",
       "       'provider': {}}],\n",
       "     'type': '体育休闲服务;运动场馆;健身中心',\n",
       "     'shopinfo': '0',\n",
       "     'name': '非凡我型健身俱乐部(广州塔店)',\n",
       "     'childtype': {}},\n",
       "    {'typecode': '080111',\n",
       "     'adname': '海珠区',\n",
       "     'biz_type': {},\n",
       "     'id': 'B0FFG8HL1C',\n",
       "     'pname': '广东省',\n",
       "     'importance': {},\n",
       "     'parent': 'B0FFFDNGAF',\n",
       "     'location': '113.326370,23.104219',\n",
       "     'distance': '310',\n",
       "     'tel': '18122181202',\n",
       "     'biz_ext': {'rating': '3.5', 'cost': {}},\n",
       "     'shopid': {},\n",
       "     'address': '珠江帝景克莱公寓b座2005室',\n",
       "     'poiweight': {},\n",
       "     'cityname': '广州市',\n",
       "     'photos': [{'url': 'http://store.is.autonavi.com/showpic/45200b8876fa72ec844d5bf0f2799721',\n",
       "       'title': {},\n",
       "       'provider': {}},\n",
       "      {'url': 'http://store.is.autonavi.com/showpic/0dab714b88e3faffa32a8372131df8e1',\n",
       "       'title': {},\n",
       "       'provider': {}},\n",
       "      {'url': 'http://store.is.autonavi.com/showpic/afb30738f5d178e12fa93bf7ecb2c24a',\n",
       "       'title': {},\n",
       "       'provider': {}}],\n",
       "     'type': '体育休闲服务;运动场馆;健身中心',\n",
       "     'shopinfo': '0',\n",
       "     'name': '风吟瑜伽',\n",
       "     'childtype': '202'},\n",
       "    {'typecode': '080000',\n",
       "     'adname': '海珠区',\n",
       "     'biz_type': {},\n",
       "     'id': 'B0FFIHMZAC',\n",
       "     'pname': '广东省',\n",
       "     'importance': {},\n",
       "     'parent': {},\n",
       "     'location': '113.328319,23.106745',\n",
       "     'distance': '383',\n",
       "     'tel': '020-29800771;18011855695',\n",
       "     'biz_ext': {'rating': '3.5', 'cost': '64.00'},\n",
       "     'shopid': {},\n",
       "     'address': '阅江西路222号广州塔东停车场内',\n",
       "     'poiweight': {},\n",
       "     'cityname': '广州市',\n",
       "     'photos': [{'url': 'http://store.is.autonavi.com/showpic/359de0f36c6aaa9cff7b0c5738b9a47b',\n",
       "       'title': {},\n",
       "       'provider': {}},\n",
       "      {'url': 'http://store.is.autonavi.com/showpic/62646b3540a61ed4d87383f0afc1eadf',\n",
       "       'title': {},\n",
       "       'provider': {}},\n",
       "      {'url': 'http://store.is.autonavi.com/showpic/f83c1349880e2d3a27f3803d53f44c38',\n",
       "       'title': {},\n",
       "       'provider': {}}],\n",
       "     'type': '体育休闲服务;体育休闲服务场所;体育休闲服务场所',\n",
       "     'shopinfo': '0',\n",
       "     'name': '广州塔篮球公园练盟',\n",
       "     'childtype': {}},\n",
       "    {'typecode': '080306|071400',\n",
       "     'adname': '海珠区',\n",
       "     'biz_type': {},\n",
       "     'id': 'B0FFF4P9KH',\n",
       "     'pname': '广东省',\n",
       "     'importance': {},\n",
       "     'parent': 'B00140AHG6',\n",
       "     'location': '113.326759,23.103619',\n",
       "     'distance': '388',\n",
       "     'tel': '020-83918883',\n",
       "     'biz_ext': {'rating': {}, 'cost': {}},\n",
       "     'shopid': {},\n",
       "     'address': '艺洲路灏景街1号珠江帝景酒店B1层',\n",
       "     'poiweight': {},\n",
       "     'cityname': '广州市',\n",
       "     'photos': [{'url': 'http://store.is.autonavi.com/showpic/d93d4c2ab372147bb7356ce74cfa74d3',\n",
       "       'title': '门头照',\n",
       "       'provider': {}}],\n",
       "     'type': '体育休闲服务;娱乐场所;棋牌室|生活服务;洗浴推拿场所;洗浴推拿场所',\n",
       "     'shopinfo': '0',\n",
       "     'name': '帝景酒店沐足中心',\n",
       "     'childtype': '202'},\n",
       "    {'typecode': '080104',\n",
       "     'adname': '海珠区',\n",
       "     'biz_type': {},\n",
       "     'id': 'B0FFGJ3GVC',\n",
       "     'pname': '广东省',\n",
       "     'importance': {},\n",
       "     'parent': 'B00140AHG6',\n",
       "     'location': '113.327289,23.103482',\n",
       "     'distance': '433',\n",
       "     'tel': '020-83918883',\n",
       "     'biz_ext': {'rating': {}, 'cost': {}},\n",
       "     'shopid': {},\n",
       "     'address': '艺洲路灏景街1号广州珠江帝景酒店首层',\n",
       "     'poiweight': {},\n",
       "     'cityname': '广州市',\n",
       "     'photos': [{'url': 'http://store.is.autonavi.com/showpic/8a234ee9e1a0b640351c409366a64aca',\n",
       "       'title': {},\n",
       "       'provider': {}},\n",
       "      {'url': 'http://store.is.autonavi.com/showpic/75943ce7d62705c195c61133f82a1a05',\n",
       "       'title': {},\n",
       "       'provider': {}},\n",
       "      {'url': 'http://store.is.autonavi.com/showpic/47160bb966d9553c2e601a7ba9ce67b2',\n",
       "       'title': {},\n",
       "       'provider': {}}],\n",
       "     'type': '体育休闲服务;运动场馆;篮球场馆',\n",
       "     'shopinfo': '0',\n",
       "     'name': '广州珠江帝景酒店-篮球场',\n",
       "     'childtype': '202'}],\n",
       "   'infocode': '10000'},\n",
       "  'header': {'gsid': '011137149035158736062847000020624792792',\n",
       "   'Vary': 'Accept-Encoding',\n",
       "   'Content-Type': 'application/json;charset=UTF-8',\n",
       "   'Access-Control-Allow-Methods': '*',\n",
       "   'Access-Control-Allow-Origin': '*',\n",
       "   'sc': '0.148',\n",
       "   'Content-Length': 6656,\n",
       "   'Access-Control-Allow-Headers': 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,key,x-biz,x-info,platinfo,encr,enginever,gzipped,poiid',\n",
       "   'X-Powered-By': 'ring/1.0.0'}},\n",
       " {'status': 200,\n",
       "  'body': {'suggestion': {'keywords': {}, 'cities': {}},\n",
       "   'info': 'OK',\n",
       "   'status': '1',\n",
       "   'count': '891',\n",
       "   'pois': [{'typecode': '080104',\n",
       "     'adname': '海珠区',\n",
       "     'biz_type': {},\n",
       "     'id': 'B0FFF5ASW8',\n",
       "     'pname': '广东省',\n",
       "     'importance': {},\n",
       "     'parent': 'B0FFIGLX5N',\n",
       "     'location': '113.296617,23.094699',\n",
       "     'distance': '118',\n",
       "     'tel': {},\n",
       "     'biz_ext': {'rating': {}, 'cost': {}},\n",
       "     'shopid': {},\n",
       "     'address': '新港西路135号中山大学竹园路',\n",
       "     'poiweight': {},\n",
       "     'cityname': '广州市',\n",
       "     'photos': {},\n",
       "     'type': '体育休闲服务;运动场馆;篮球场馆',\n",
       "     'shopinfo': '0',\n",
       "     'name': '中山大学篮球场',\n",
       "     'childtype': '309'},\n",
       "    {'typecode': '080105',\n",
       "     'adname': '海珠区',\n",
       "     'biz_type': {},\n",
       "     'id': 'B0FFG31A2A',\n",
       "     'pname': '广东省',\n",
       "     'importance': {},\n",
       "     'parent': 'B00141IHRZ',\n",
       "     'location': '113.295407,23.095946',\n",
       "     'distance': '131',\n",
       "     'tel': {},\n",
       "     'biz_ext': {'rating': {}, 'cost': {}},\n",
       "     'shopid': {},\n",
       "     'address': '新港西路135号中山大学南校区',\n",
       "     'poiweight': {},\n",
       "     'cityname': '广州市',\n",
       "     'photos': {},\n",
       "     'type': '体育休闲服务;运动场馆;足球场',\n",
       "     'shopinfo': '0',\n",
       "     'name': '中山大学-足球场',\n",
       "     'childtype': '309'},\n",
       "    {'typecode': '080100',\n",
       "     'adname': '海珠区',\n",
       "     'biz_type': {},\n",
       "     'id': 'B0FFG0ZW7J',\n",
       "     'pname': '广东省',\n",
       "     'importance': {},\n",
       "     'parent': 'B00141IHRZ',\n",
       "     'location': '113.295298,23.095221',\n",
       "     'distance': '153',\n",
       "     'tel': {},\n",
       "     'biz_ext': {'rating': {}, 'cost': {}},\n",
       "     'shopid': {},\n",
       "     'address': '新港西路135号',\n",
       "     'poiweight': {},\n",
       "     'cityname': '广州市',\n",
       "     'photos': [{'url': 'http://aos-cdn-image.amap.com/sns/ugccomment/655592e0-4e3e-48fd-9365-d110d7b3c573.jpg',\n",
       "       'title': {},\n",
       "       'provider': {}},\n",
       "      {'url': 'http://aos-cdn-image.amap.com/sns/ugccomment/fcd43a7c-ab0a-4a05-95b1-75b08fbffed3.jpg',\n",
       "       'title': {},\n",
       "       'provider': {}},\n",
       "      {'url': 'http://aos-cdn-image.amap.com/sns/ugccomment/b18ecf42-b11a-4a03-98c2-62fedee191de.jpg',\n",
       "       'title': {},\n",
       "       'provider': {}}],\n",
       "     'type': '体育休闲服务;运动场馆;运动场所',\n",
       "     'shopinfo': '0',\n",
       "     'name': '中山大学广州校区南校园-西田径场',\n",
       "     'childtype': '309'},\n",
       "    {'typecode': '080402',\n",
       "     'adname': '海珠区',\n",
       "     'biz_type': {},\n",
       "     'id': 'B00140SNR0',\n",
       "     'pname': '广东省',\n",
       "     'importance': {},\n",
       "     'parent': 'B0FFGKLYFZ',\n",
       "     'location': '113.299172,23.095521',\n",
       "     'distance': '257',\n",
       "     'tel': {},\n",
       "     'biz_ext': {'rating': '2.3', 'cost': {}},\n",
       "     'shopid': {},\n",
       "     'address': '新港西路135号中山大学东南区279号楼',\n",
       "     'poiweight': {},\n",
       "     'cityname': '广州市',\n",
       "     'photos': [{'url': 'http://store.is.autonavi.com/showpic/dd54cae723d729d715d5a4729b0e9ce2',\n",
       "       'title': {},\n",
       "       'provider': {}}],\n",
       "     'type': '体育休闲服务;度假疗养场所;疗养院',\n",
       "     'shopinfo': '0',\n",
       "     'name': '中山大学-护养院',\n",
       "     'childtype': '309'},\n",
       "    {'typecode': '080000',\n",
       "     'adname': '海珠区',\n",
       "     'biz_type': {},\n",
       "     'id': 'B0FFKE5H90',\n",
       "     'pname': '广东省',\n",
       "     'importance': {},\n",
       "     'parent': {},\n",
       "     'location': '113.294839,23.093179',\n",
       "     'distance': '343',\n",
       "     'tel': {},\n",
       "     'biz_ext': {'rating': {}, 'cost': {}},\n",
       "     'shopid': {},\n",
       "     'address': '新港西路105号',\n",
       "     'poiweight': {},\n",
       "     'cityname': '广州市',\n",
       "     'photos': {},\n",
       "     'type': '体育休闲服务;体育休闲服务场所;体育休闲服务场所',\n",
       "     'shopinfo': '0',\n",
       "     'name': '广东省生物资源应用研究所篮球场',\n",
       "     'childtype': {}},\n",
       "    {'typecode': '080500',\n",
       "     'adname': '海珠区',\n",
       "     'biz_type': {},\n",
       "     'id': 'B0FFG1USDN',\n",
       "     'pname': '广东省',\n",
       "     'importance': {},\n",
       "     'parent': 'B0FFIGLX5N',\n",
       "     'location': '113.292954,23.095635',\n",
       "     'distance': '380',\n",
       "     'tel': {},\n",
       "     'biz_ext': {'rating': {}, 'cost': {}},\n",
       "     'shopid': {},\n",
       "     'address': '新港西路135号中山大学南校区',\n",
       "     'poiweight': {},\n",
       "     'cityname': '广州市',\n",
       "     'photos': {},\n",
       "     'type': '体育休闲服务;休闲场所;休闲场所',\n",
       "     'shopinfo': '0',\n",
       "     'name': '中山大学广州南校区老干部活动中心',\n",
       "     'childtype': '309'},\n",
       "    {'typecode': '080500|080300',\n",
       "     'adname': '海珠区',\n",
       "     'biz_type': {},\n",
       "     'id': 'B00141QYKH',\n",
       "     'pname': '广东省',\n",
       "     'importance': {},\n",
       "     'parent': 'B00141IHRZ',\n",
       "     'location': '113.293461,23.093855',\n",
       "     'distance': '391',\n",
       "     'tel': {},\n",
       "     'biz_ext': {'rating': '3.5', 'cost': {}},\n",
       "     'shopid': {},\n",
       "     'address': '中山大学广州南校区蒲园区610号',\n",
       "     'poiweight': {},\n",
       "     'cityname': '广州市',\n",
       "     'photos': [{'url': 'http://store.is.autonavi.com/showpic/db267815eceb10999941bb9116543975',\n",
       "       'title': {},\n",
       "       'provider': {}},\n",
       "      {'url': 'http://store.is.autonavi.com/showpic/e139a1c8b655ca518ff48610bee1a573',\n",
       "       'title': {},\n",
       "       'provider': {}},\n",
       "      {'url': 'http://store.is.autonavi.com/showpic/b2a6716719d9093599942c1a88b5ecd0',\n",
       "       'title': {},\n",
       "       'provider': {}}],\n",
       "     'type': '体育休闲服务;休闲场所;休闲场所|体育休闲服务;娱乐场所;娱乐场所',\n",
       "     'shopinfo': '0',\n",
       "     'name': '中山大学南校区教工活动中心',\n",
       "     'childtype': '309'},\n",
       "    {'typecode': '080500',\n",
       "     'adname': '海珠区',\n",
       "     'biz_type': {},\n",
       "     'id': 'B0FFG4IQWR',\n",
       "     'pname': '广东省',\n",
       "     'importance': {},\n",
       "     'parent': 'B0FFIGLX5N',\n",
       "     'location': '113.292786,23.095857',\n",
       "     'distance': '398',\n",
       "     'tel': {},\n",
       "     'biz_ext': {'rating': {}, 'cost': {}},\n",
       "     'shopid': {},\n",
       "     'address': '新港西路135号中山大学蒲园路附近',\n",
       "     'poiweight': {},\n",
       "     'cityname': '广州市',\n",
       "     'photos': {},\n",
       "     'type': '体育休闲服务;休闲场所;休闲场所',\n",
       "     'shopinfo': '0',\n",
       "     'name': '中山大学老人活动中心',\n",
       "     'childtype': '309'},\n",
       "    {'typecode': '080105',\n",
       "     'adname': '海珠区',\n",
       "     'biz_type': {},\n",
       "     'id': 'B0FFGLGI1B',\n",
       "     'pname': '广东省',\n",
       "     'importance': {},\n",
       "     'parent': 'B00141IHRZ',\n",
       "     'location': '113.300520,23.094873',\n",
       "     'distance': '406',\n",
       "     'tel': {},\n",
       "     'biz_ext': {'rating': {}, 'cost': {}},\n",
       "     'shopid': {},\n",
       "     'address': '康乐路附近',\n",
       "     'poiweight': {},\n",
       "     'cityname': '广州市',\n",
       "     'photos': {},\n",
       "     'type': '体育休闲服务;运动场馆;足球场',\n",
       "     'shopinfo': '0',\n",
       "     'name': '中山大学-足球场',\n",
       "     'childtype': '309'},\n",
       "    {'typecode': '080101',\n",
       "     'adname': '海珠区',\n",
       "     'biz_type': {},\n",
       "     'id': 'B00140SD1R',\n",
       "     'pname': '广东省',\n",
       "     'importance': {},\n",
       "     'parent': 'B0FFIGLX5N',\n",
       "     'location': '113.301014,23.0963',\n",
       "     'distance': '448',\n",
       "     'tel': '020-84113122',\n",
       "     'biz_ext': {'rating': '3.3', 'cost': '60.00'},\n",
       "     'shopid': {},\n",
       "     'address': '新港西路135号中山大学东北区302',\n",
       "     'poiweight': {},\n",
       "     'cityname': '广州市',\n",
       "     'photos': [{'url': 'http://store.is.autonavi.com/showpic/3de609378bbe201e6f03e22c13bb33ef',\n",
       "       'title': '内景图',\n",
       "       'provider': {}},\n",
       "      {'url': 'http://store.is.autonavi.com/showpic/9752b23c8cb78bec8ce06bb6b35c7b69',\n",
       "       'title': '外景图',\n",
       "       'provider': {}},\n",
       "      {'url': 'http://store.is.autonavi.com/showpic/7df61c8a68d90d23117b98b5eee3c4ac',\n",
       "       'title': '外景图',\n",
       "       'provider': {}}],\n",
       "     'type': '体育休闲服务;运动场馆;综合体育馆',\n",
       "     'shopinfo': '0',\n",
       "     'name': '中山大学广州南校区英东体育馆(中大东北区店)',\n",
       "     'childtype': '309'}],\n",
       "   'infocode': '10000'},\n",
       "  'header': {'gsid': '011137149035158736062847000020624792792',\n",
       "   'Vary': 'Accept-Encoding',\n",
       "   'Content-Type': 'application/json;charset=UTF-8',\n",
       "   'Access-Control-Allow-Methods': '*',\n",
       "   'Access-Control-Allow-Origin': '*',\n",
       "   'sc': '0.153',\n",
       "   'Content-Length': 6009,\n",
       "   'Access-Control-Allow-Headers': 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,key,x-biz,x-info,platinfo,encr,enginever,gzipped,poiid',\n",
       "   'X-Powered-By': 'ring/1.0.0'}}]"
      ]
     },
     "execution_count": 153,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "place_1 = geocodes_find('广州市海珠区阅江西路222号','guangdon')\n",
    "place_2 = geocodes_find('广东省广州市新港西路135号','guangdon')\n",
    "\n",
    "request_port(place_1,place_2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 静态地图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "from PIL import Image\n",
    "from io import BytesIO"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "from PIL import Image\n",
    "from io import BytesIO\n",
    "def staticmap(location,zoom,size=None,scale=1,markers=None,labels=None,paths=None,traffic=0,page=None,sig=None)->dict:\n",
    "    url = 'https://restapi.amap.com/v3/staticmap?parameters'\n",
    "    params={\n",
    "        'key':'5d9ecde3c906860e39493987d1053573',\n",
    "        'location':location,\n",
    "        'zoom':zoom,\n",
    "        'size':size,\n",
    "        'scale':scale,\n",
    "        'markers':markers,\n",
    "        'labels':labels,\n",
    "        'paths':paths,\n",
    "        'traffic':traffic,\n",
    "        'output':'json'\n",
    "    }\n",
    "    response = requests.get(url,params=params)\n",
    "    data = Image.open(BytesIO(response.content))\n",
    "    return data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<PIL.PngImagePlugin.PngImageFile image mode=P size=400x400 at 0x23FB72FA548>"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "staticmap(location='113.402717,23.121963',zoom=16)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 坐标转换"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 输入百度地图的坐标经纬度 --->  转换成高德地图的经纬度\n",
    "\n",
    "def coordinate_change(locations):\n",
    "    url = 'https://restapi.amap.com/v3/assistant/coordinate/convert?parameters'\n",
    "    Api_key = '5d9ecde3c906860e39493987d1053573'\n",
    "\n",
    "    params = {\n",
    "        'key':Api_key,\n",
    "        'locations':locations,\n",
    "        'coordsys':'baidu',\n",
    "        'output':'json',\n",
    "    }\n",
    "\n",
    "    response = requests.get(url,params=params)\n",
    "    coordinate_change = response.json()\n",
    "    coordinate_change_result = coordinate_change[\"locations\"]\n",
    "    return coordinate_change_result"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'23.121797708561,113.403335465983'"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "coordinate_change('23.12844,113.40931')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 天气查询"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "def weather(city,extensions=all):\n",
    "    url = 'https://restapi.amap.com/v3/weather/weatherInfo?parameters'\n",
    "    Api_key = '5d9ecde3c906860e39493987d1053573'\n",
    "\n",
    "    params = {\n",
    "        'key':Api_key,\n",
    "        'city':'440106',\n",
    "        'extensions':'all',\n",
    "        'output':'json',\n",
    "    }\n",
    "\n",
    "    response = requests.get(url,params=params)\n",
    "    weather_find = response.json()\n",
    "    return weather_find"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 162,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>日期</th>\n",
       "      <th>week</th>\n",
       "      <th>dayweather</th>\n",
       "      <th>nightweather</th>\n",
       "      <th>daytemp</th>\n",
       "      <th>nighttemp</th>\n",
       "      <th>daywind</th>\n",
       "      <th>nightwind</th>\n",
       "      <th>daypower</th>\n",
       "      <th>nightpower</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2020-04-20</td>\n",
       "      <td>1</td>\n",
       "      <td>多云</td>\n",
       "      <td>多云</td>\n",
       "      <td>30</td>\n",
       "      <td>23</td>\n",
       "      <td>无风向</td>\n",
       "      <td>无风向</td>\n",
       "      <td>≤3</td>\n",
       "      <td>≤3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2020-04-21</td>\n",
       "      <td>2</td>\n",
       "      <td>雷阵雨</td>\n",
       "      <td>中雨-大雨</td>\n",
       "      <td>29</td>\n",
       "      <td>20</td>\n",
       "      <td>无风向</td>\n",
       "      <td>无风向</td>\n",
       "      <td>≤3</td>\n",
       "      <td>≤3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2020-04-22</td>\n",
       "      <td>3</td>\n",
       "      <td>中雨-大雨</td>\n",
       "      <td>中雨</td>\n",
       "      <td>25</td>\n",
       "      <td>17</td>\n",
       "      <td>无风向</td>\n",
       "      <td>无风向</td>\n",
       "      <td>≤3</td>\n",
       "      <td>≤3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2020-04-23</td>\n",
       "      <td>4</td>\n",
       "      <td>中雨</td>\n",
       "      <td>中雨-大雨</td>\n",
       "      <td>20</td>\n",
       "      <td>14</td>\n",
       "      <td>东北</td>\n",
       "      <td>东北</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           日期 week dayweather nightweather daytemp nighttemp daywind  \\\n",
       "0  2020-04-20    1         多云           多云      30        23     无风向   \n",
       "1  2020-04-21    2        雷阵雨        中雨-大雨      29        20     无风向   \n",
       "2  2020-04-22    3      中雨-大雨           中雨      25        17     无风向   \n",
       "3  2020-04-23    4         中雨        中雨-大雨      20        14      东北   \n",
       "\n",
       "  nightwind daypower nightpower  \n",
       "0       无风向       ≤3         ≤3  \n",
       "1       无风向       ≤3         ≤3  \n",
       "2       无风向       ≤3         ≤3  \n",
       "3        东北        4          4  "
      ]
     },
     "execution_count": 162,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# weather(440106)[\"forecasts\"][0][\"casts\"]\n",
    "df = pd.DataFrame(weather(440106)[\"forecasts\"][0][\"casts\"])\n",
    "df.rename(columns={'date':'日期'})"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 输入提示\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 170,
   "metadata": {},
   "outputs": [],
   "source": [
    "def input_tips(keywords,city):\n",
    "    url = 'https://restapi.amap.com/v3/assistant/inputtips?parameters'\n",
    "    Api_key = '5d9ecde3c906860e39493987d1053573'\n",
    "\n",
    "    params = {\n",
    "        'key':Api_key,\n",
    "        'keywords':keywords,\n",
    "        'city':city,\n",
    "        'output':'json',\n",
    "    }\n",
    "\n",
    "    response = requests.get(url,params=params)\n",
    "    Tips = response.json()\n",
    "    return Tips"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 173,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>name</th>\n",
       "      <th>district</th>\n",
       "      <th>adcode</th>\n",
       "      <th>location</th>\n",
       "      <th>address</th>\n",
       "      <th>typecode</th>\n",
       "      <th>city</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>[]</td>\n",
       "      <td>肯德基</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>B00140UEQ5</td>\n",
       "      <td>肯德基(中山四店)</td>\n",
       "      <td>广东省广州市越秀区</td>\n",
       "      <td>440104</td>\n",
       "      <td>113.273300,23.125993</td>\n",
       "      <td>中山四路199号东鸣轩1层</td>\n",
       "      <td>050301</td>\n",
       "      <td>[]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>B00140C0X9</td>\n",
       "      <td>肯德基(五月花店)</td>\n",
       "      <td>广东省广州市越秀区</td>\n",
       "      <td>440104</td>\n",
       "      <td>113.267089,23.125895</td>\n",
       "      <td>中山五路68号五月花商业广场B2层B221-B225</td>\n",
       "      <td>050301</td>\n",
       "      <td>[]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>B00140T531</td>\n",
       "      <td>肯德基(光明广场店)</td>\n",
       "      <td>广东省广州市越秀区</td>\n",
       "      <td>440104</td>\n",
       "      <td>113.267228,23.122873</td>\n",
       "      <td>西湖路63号光明广场2层</td>\n",
       "      <td>050301</td>\n",
       "      <td>[]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>B00140U1MF</td>\n",
       "      <td>肯德基(署前店)</td>\n",
       "      <td>广东省广州市越秀区</td>\n",
       "      <td>440104</td>\n",
       "      <td>113.295125,23.123366</td>\n",
       "      <td>署前路33号1-2层</td>\n",
       "      <td>050301</td>\n",
       "      <td>[]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>B00140AEMR</td>\n",
       "      <td>肯德基(锦轩店)</td>\n",
       "      <td>广东省广州市越秀区</td>\n",
       "      <td>440104</td>\n",
       "      <td>113.295916,23.125822</td>\n",
       "      <td>农林下路4-6号锦轩现代城1层</td>\n",
       "      <td>050301</td>\n",
       "      <td>[]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>B00141IEYA</td>\n",
       "      <td>肯德基(淘金店)</td>\n",
       "      <td>广东省广州市越秀区</td>\n",
       "      <td>440104</td>\n",
       "      <td>113.287706,23.139518</td>\n",
       "      <td>淘金路淘金街6-8号1楼(世贸大厦后面)</td>\n",
       "      <td>050301</td>\n",
       "      <td>[]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>B00140UOHC</td>\n",
       "      <td>肯德基(中六乐购KFC店)</td>\n",
       "      <td>广东省广州市越秀区</td>\n",
       "      <td>440104</td>\n",
       "      <td>113.255050,23.124989</td>\n",
       "      <td>中山六路281号上品轩B1层</td>\n",
       "      <td>050301</td>\n",
       "      <td>[]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>B0FFF0EPRU</td>\n",
       "      <td>肯德基(滨江东店KFC店)</td>\n",
       "      <td>广东省广州市海珠区</td>\n",
       "      <td>440105</td>\n",
       "      <td>113.293046,23.103682</td>\n",
       "      <td>滨江东路35滨江壹号购物商场附近</td>\n",
       "      <td>050301</td>\n",
       "      <td>[]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>B00140UI3A</td>\n",
       "      <td>肯德基(东峻广场店)</td>\n",
       "      <td>广东省广州市越秀区</td>\n",
       "      <td>440104</td>\n",
       "      <td>113.306625,23.131587</td>\n",
       "      <td>东风东路836号东峻广场西园首层29、30号</td>\n",
       "      <td>050301</td>\n",
       "      <td>[]</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           id           name   district  adcode              location  \\\n",
       "0          []            肯德基         []      []                    []   \n",
       "1  B00140UEQ5      肯德基(中山四店)  广东省广州市越秀区  440104  113.273300,23.125993   \n",
       "2  B00140C0X9      肯德基(五月花店)  广东省广州市越秀区  440104  113.267089,23.125895   \n",
       "3  B00140T531     肯德基(光明广场店)  广东省广州市越秀区  440104  113.267228,23.122873   \n",
       "4  B00140U1MF       肯德基(署前店)  广东省广州市越秀区  440104  113.295125,23.123366   \n",
       "5  B00140AEMR       肯德基(锦轩店)  广东省广州市越秀区  440104  113.295916,23.125822   \n",
       "6  B00141IEYA       肯德基(淘金店)  广东省广州市越秀区  440104  113.287706,23.139518   \n",
       "7  B00140UOHC  肯德基(中六乐购KFC店)  广东省广州市越秀区  440104  113.255050,23.124989   \n",
       "8  B0FFF0EPRU  肯德基(滨江东店KFC店)  广东省广州市海珠区  440105  113.293046,23.103682   \n",
       "9  B00140UI3A     肯德基(东峻广场店)  广东省广州市越秀区  440104  113.306625,23.131587   \n",
       "\n",
       "                      address typecode city  \n",
       "0                          []       []   []  \n",
       "1               中山四路199号东鸣轩1层   050301   []  \n",
       "2  中山五路68号五月花商业广场B2层B221-B225   050301   []  \n",
       "3                西湖路63号光明广场2层   050301   []  \n",
       "4                  署前路33号1-2层   050301   []  \n",
       "5             农林下路4-6号锦轩现代城1层   050301   []  \n",
       "6        淘金路淘金街6-8号1楼(世贸大厦后面)   050301   []  \n",
       "7              中山六路281号上品轩B1层   050301   []  \n",
       "8            滨江东路35滨江壹号购物商场附近   050301   []  \n",
       "9      东风东路836号东峻广场西园首层29、30号   050301   []  "
      ]
     },
     "execution_count": 173,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# input_tips('肯德基','020')\n",
    "df = pd.DataFrame(input_tips('肯德基','020')[\"tips\"])\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 交通态势\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### rectangle，代表此为矩形区域查询\n",
    "\n",
    "左下右上顶点坐标对。矩形对角线不能超过10公里\n",
    "\n",
    "两个坐标对之间用”;”间隔\n",
    "\n",
    "xy之间用”,”间隔\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "def traffic_status(rectangle,extensions):\n",
    "    url = 'https://restapi.amap.com/v3/traffic/status/rectangle?parameters'\n",
    "    Api_key = '5d9ecde3c906860e39493987d1053573'\n",
    "\n",
    "    params = {\n",
    "        'key':Api_key,\n",
    "        'level':'5',\n",
    "        'rectangle':rectangle,\n",
    "        'extensions':extensions,\n",
    "        'output':'json',\n",
    "    }\n",
    "\n",
    "    response = requests.get(url,params=params)\n",
    "    traffic_status = response.json()\n",
    "    return traffic_status"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'status': '1',\n",
       " 'info': 'OK',\n",
       " 'infocode': '10000',\n",
       " 'trafficinfo': {'description': '北三环路：三元桥附近自东向西严重拥堵；北四环路：北辰西桥附近自西向东行驶缓慢。',\n",
       "  'evaluation': {'expedite': '75.00%',\n",
       "   'congested': '18.75%',\n",
       "   'blocked': '6.25%',\n",
       "   'unknown': '0.00%',\n",
       "   'status': '2',\n",
       "   'description': '轻度拥堵'}}}"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "traffic_status('116.351147,39.966309;116.357134,39.968727','base')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 地理围栏"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 1、创建围栏\n",
    "# 创建地理围栏API服务POST请求地址：https://restapi.amap.com/v4/geofence/meta?key=用户key -d 'json'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {},
   "outputs": [],
   "source": [
    "def create_wall(name,center,radius):\n",
    "    url = 'https://restapi.amap.com/v4/geofence/meta?key=5d9ecde3c906860e39493987d1053573'\n",
    "    Api_key = '5d9ecde3c906860e39493987d1053573'\n",
    "    \n",
    "    params = {\n",
    "        \"name\": name,\n",
    "        \"center\": center,\n",
    "        \"radius\": radius,\n",
    "        \"enable\": \"true\",\n",
    "        \"valid_time\": \"2022-05-19\",\n",
    "        \"repeat\": \"Mon,Tues,Wed,Thur,Fri,Sat,Sun\",\n",
    "        \"time\": \"00:00,11:59;13:00,20:59\",\n",
    "        \"desc\": \"第一次围栏测试\",\n",
    "        \"alert_condition\": \"enter;leave\"\n",
    "    }\n",
    "    response = requests.get(url,params=params)\n",
    "    data = response.json()\n",
    "    return data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'data': {'page_no': 1, 'page_size': 20, 'rs_list': [], 'total_record': 0},\n",
       " 'errcode': 0,\n",
       " 'errdetail': None,\n",
       " 'errmsg': 'OK',\n",
       " 'ext': None}"
      ]
     },
     "execution_count": 86,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "create_wall('czc_wall','100','100')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 轨迹纠偏\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 125,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'data': {'distance': 33.0,\n",
       "  'points': [{'x': 116.44942000249563, 'y': 40.014843356125866},\n",
       "   {'x': 116.44945705955585, 'y': 40.01453960973057}]},\n",
       " 'errcode': 0,\n",
       " 'errdetail': None,\n",
       " 'errmsg': 'OK',\n",
       " 'ext': None}"
      ]
     },
     "execution_count": 125,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "url = 'https://restapi.amap.com/v4/grasproad/driving'\n",
    "Api_key = '5d9ecde3c906860e39493987d1053573'\n",
    "\n",
    "headers = {\n",
    "    'Content-Type':'application/json'\n",
    "}\n",
    "\n",
    "body = [{\n",
    "\"x\": 116.449429,\n",
    "\"y\": 40.014844,\n",
    "\"sp\": 4,\n",
    "\"ag\": 110,\n",
    "\"tm\": 1478831753\n",
    "}, {\n",
    "\"x\": 116.449639,\n",
    "\"y\": 40.014776,\n",
    "\"sp\": 3,\n",
    "\"ag\": 110,\n",
    "\"tm\": 23\n",
    "}, {\n",
    "\"x\": 116.449859,\n",
    "\"y\": 40.014716,\n",
    "\"sp\": 3,\n",
    "\"ag\": 111,\n",
    "\"tm\": 33\n",
    "}, {\n",
    "\"x\": 116.450074,\n",
    "\"y\": 40.014658,\n",
    "\"sp\": 3,\n",
    "\"ag\": 110,\n",
    "\"tm\": 31\n",
    "}, {\n",
    "\"x\": 116.450273,\n",
    "\"y\": 40.014598,\n",
    "\"sp\": 3,\n",
    "\"ag\": 111,\n",
    "\"tm\": 20\n",
    "}]\n",
    "\n",
    "params = {\n",
    "    'key':Api_key\n",
    "}\n",
    "\n",
    "r = requests.post(url,params=params,headers=headers,json=body)\n",
    "r.json()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# APP设计"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 构想：给上下班的成人制定一款能够在上下班时候，提前让你知道上班路上的交通情况，能帮助你重新规划路线，避开交通拥挤的道路。\n",
    "\n",
    "## 所调用的API：\n",
    "1.“住所”以及“上班的目的地”的位置将使用API转换成编码形式\n",
    "\n",
    "2.调用“交通态势”的API，监测道路的交通拥堵情况\n",
    "\n",
    "3.使用“路线规划”中的驾车的API，与“交通态势”相合并，排除掉交通拥挤的道路，显示其他的可行的道路供用户选择\n",
    "\n",
    "4.如果出发地与目的地相差不是很远，可以是用“静态地图”，先绘制出大概的路线，类似于将信息可视化的形式，可以先让用户结合“静态地图”，挑选出自己想要行驶的大概路线，APP系统再根据用户的选择进行匹配对应的交通较为便利的道路"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
